use std::path::PathBuf;

use chatglm_cpp_sys::GenerationConfig;
use serde::{Deserialize, Serialize};
use talktive::TalktiveKenerlConfig;

use crate::kenerl::ChatGLMCpp;

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ChatGLMCppConfig {
    pub(crate) model_path: PathBuf,
    pub(crate) generate_config: GenerationConfig,
}

impl Default for ChatGLMCppConfig {
    fn default() -> Self {
        Self {
            model_path: "".into(),
            generate_config: GenerationConfig::default(),
        }
    }
}

impl TalktiveKenerlConfig for ChatGLMCppConfig {
    type Kenerl = ChatGLMCpp;
}
